/*
* custom validation:
* Add a custom validation method. 
* It must consist of a name (must be a legal javascript identifier), 
* a javascript based function and a default string message.
* using this method:
* jQuery.validator.addMethod( name, method [, message ] )
*/

//中文字两个字节：一个中文是两个字节长度
jQuery.validator.addMethod("byteRangeLength",
		function(value, element, param) {
			var length = value.length;
			for (var i = 0; i < value.length; i++) {
				if (value.charCodeAt(i) > 127) {
					length++;
				}
			}
			return this.optional(element)
					|| (length >= param[0] && length <= param[1]);
		}, $.validator.format("请确保输入的值在{0}-{1}个字节之间(一个中文字算2个字节)"));


// 邮政编码验证
jQuery.validator.addMethod("isZipCode", function(value, element) {
	var tel = /^[0-9]{6}$/;
	return this.optional(element) || (tel.test(value));
}, "请正确填写您的邮政编码");


//固定电话123-85611111 或 0311-8561111  
jQuery.validator.addMethod("phone", function(value, element) {
	return this.optional(element) || /^\d{3}-?\d{8}$|\d{4}-?\d[7,8]$/.test(value);
}, "固定电话号码格式错误");


//13866666666  
jQuery.validator.addMethod("telphone", function(value, element) {
	return this.optional(element)
			|| /^(\+86)|(86)?1[3,4,5,7,8]{1}[0-9]{1}[0-9]{8}$/.test(value)
}, "移动电话号码格式错误");
// 联系电话验证方式：包括固话和移动电话
jQuery.validator.addMethod("allphone", function(value, element) {
	return this.optional(element)
			|| /^\d{3}-?\d{8}$|\d{4}-?\d[7,8]$|1[34578]\d{9}$/
					.test(value);
}, "移动电话号码格式错误");


//身份证号，只验证长度，未验证身份证号的校验合法性  
jQuery.validator.addMethod("idcard", function(value, element) {
	/*return this.optional(element)
			|| /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value);*/
	console.info("身份证验证结果："+isCardIDValide(value));
	return this.optional(element) || isCardIDValide(value);
}, "身份证号不合法");

/*
 * 身份证合法性验证的子方法
 */
function isCardIDValide(sId){
	// 全国城市编码
	var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} 
    var iSum=0 ;
    if(!/^\d{17}(\d|x)$/i.test(sId)) return false; 
    sId=sId.replace(/x$/i,"a"); 
    if(aCity[parseInt(sId.substr(0,2))]==null) return false; 
    sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); 
    var d=new Date(sBirthday.replace(/-/g,"/")) ;
    if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return false; 
    for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) ;
    if(iSum%11!=1) return false; 
    //aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女");//此次还可以判断出输入的身份证号的人性别
    return true;
} 

//上传文件格式验证  
jQuery.validator.addMethod("filetype", function(value, element, param) {
	var fileType = value.substring(value.lastIndexOf(".") + 1).toLowerCase();
	return this.optional(element) || $.inArray(fileType, param) != -1;
}, "上传文件格式不正确");